1. Field of the Invention
The present invention relates to a method, system, and computer program product for supporting non-delivery notification between a switch and device in a network.
2. Description of the Related Art
In Fibre Channel Storage Area Networks (SAN), a Fibre Channel fabric may consist of several switches and interconnects between an Initiator (e.g. Server) Nx_Port and a Target Nx_Port (e.g. a storage device). When any physical Fibre Channel link in the path between two Nx_Ports fails or is taken off-line for a service action, reset, or other recovery action, the communicating Nx_Ports must be able to quickly determine the state of the entire communication path between them so that they can take action to fail and recover this communication path or begin using another available path before higher level applications or operating systems use a failed path and experience lengthy time-out recoveries.
A server or other device in a network may determine the state of a path to another node by sending a query frame. In Fibre Channel implementations, the device wanting to determine the state may send a PDISC Extended Link Service (ELS) request from a first Nx_Port to a second destination Nx_Port and use the response or lack of a response within a timeout time period to determine the state of the path. Alternatively, the device may send a query to the nameserver to determine if a target device has been deregistered from the nameserver because of a link failure or link off-line condition at the device. Each of these methods may be initiated upon the receipt of a Registered State Change Notification (RSCN) from the fabric which indicates a change in the state of the fabric which may affect communication from this device.
The Fibre Channel class 2 service provides information on the availability of devices by requiring acknowledged delivery of a frame or request and notification by the fabric to the requestor when a frame or request cannot be delivered. For instance, in the Fibre Channel class 2 service, if the request is sent from one Nx_Port to another Nx_Port and cannot be delivered to the target at any particular point in the fabric, the switch that could not deliver the request must send a Fabric Reject (F_RJT) or Fabric Busy (F_BSY) response to the requester. This gives the requester an immediate indication (within microseconds) that a part of the path has failed. The class 2 service may further be used to query the nameserver so that an immediate F_RJT or P_RJT (Port Reject) is received if the initiator is not currently logged into the fabric or the nameserver, respectively.
The Fibre Channel Class 2 service is expensive to implement in Fibre Channel switches and host bus adaptors and is not widely used by non-enterprise class Fibre Channel devices. More common is the use of the Fibre Channel class 3 service which does not require confirmed delivery notification. A class 3 query that could not be delivered would be dropped with no notification to the requester. In the Fibre Channel class 3 environment, a device wanting to determine the state of a Fibre Channel path must send a query to a destination node and wait for a timeout period to expire with no response to determine that the tested path to the destination node is unavailable. Waiting for a timeout period to determine the state of the path may not provide for timely determination of path failures. For instance, the requestor may have to not only wait for a timeout period that is in the order of 2-10 seconds, but in some implementations retry the query and time-out again before making a determination that the path has failed. This determination is not guaranteed to be accurate as the time-outs may have been caused by some other error or fabric congestion.